package decorator;

/**
 * question:
 *      1. 为什么这个 Robot 是接口不是父类;
 *      2. 装饰器模式是为了方便什么来着, 好处是什么;
 *          为一个对象(如 FirstRobot)增加一些额外的功能时,
 *          不使用装饰器模式则需要继承 FirstRobot, 在类的层级修改没那么方便, 没那么灵活
 */

public class DecoratorPattern {

}

interface Robot {
    void doSomething();
}

class FirstRobot implements Robot {

    @Override
    public void doSomething() {
        System.out.println("对话");
    }
}

// 也有说是静态代理
class SecondRobot implements Robot {
    private Robot robot;

    @Override
    public void doSomething() {
        robot.doSomething();
    }

    public void doMoreThing() {
        System.out.println("唱歌");
    }
}